package com.whmall.service.crm.entity.dto.company;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.whmall.component.entity.dto.CompanyKeyFieldDTO;
import com.whmall.component.entity.dto.CompanyUserInvoiceDTO;
import com.whmall.service.crm.entity.dto.companycontact.CompanyContactRspDTO;
import com.whmall.service.crm.entity.dto.companyuser.CompanyUserListItemRspDTO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class CompanyQueryRspDTO implements Serializable {

    private static final long serialVersionUID = 5962359965089364771L;

    private Long id;

    private String name;

    private Date establishedTime;

    private String formerName;

    /** 是否可以修改供应商采购订单金额 */
    private Integer isCanMspoa;

    //
    private String tel;

    /** 是否供应商 */
    private Integer isSupplier;

    /** 是否客户 */
    private Integer isCustomer;
    private Integer verified;

    private Integer isBigCustomer;

    /** 公司规模 */
    private Integer companyScale;

    private Integer registeredCapital;

    private Integer companySource;

    private String companyType;

    private Integer province;

    private Integer city;

    private Integer district;
    //
    private String otherSource;
    //
    private String address;
    //
    private String supplierOrderSpecialRequirement;
    //
    private String introduce;

    /** 需要云检测	1是，0否，2必须 */
    private Integer needDetect;

    private Integer customerSettlementMethod;

    /** 供应商结算方式 */
    private Integer supplierSettlementMethod;

    private String nameAbbr;
    //
    private String website;

    /** 撮合ID */
    private Long traderId;

    /** 撮合姓名 */
    private String traderName;

    /** 客服ID */
    private Long csId;

    /** 客服姓名 */
    private String csName;

    /** 采购ID */
    private Long purchaserId;

    /** 采购姓名 */
    private String purchaserName;

    /** 备选采购ID */
    private Long backPurchaserId;

    /** 备选采购姓名 */
    private String backPurchaserName;

    /** 供管ID */
    private Long vmId;

    /** 供管姓名 */
    private String vmName;

    /** BD ID */
    private Long bdId;

    /** BD 姓名 */
    private String bdName;

    /** 管制品专员 ID */
    private Long controlId;

    /** 管制品专员 姓名 */
    private String controlName;

    /** 撮合部门路径 */
    private String traderDepartmentPath;

    /** 客服部门路径 */
    private String csDepartmentPath;

    /** 采购部门路径 */
    private String purchaserDepartmentPath;

    /** 供管部门路径 */
    private String vmDepartmentPath;

    //
    private String logoUrl;

    /** 最大上传产品数量 */
    //
    private Integer maxProductCount;

    /** 未上传营业执照原因 */
    private Integer notUploadBl;

    /** 完整的地址 */
    private String wholeAdress;

    /** 登录用户ID（前端不传） */
    private Long employeeId;

    private Date createTime;

//    private String invoiceEmail;

    /**
     * 易制毒企业ID
     */
    private Long precursorEnterpriseId;

    /**
     * 前端成本核算查询数据周期
     */
    private Integer fecaQueryDataCycle;


    /**
     * 关联公司ID列表 格式：-ID1-ID2-…-IDN-，最多支持12个
     */
    private String associatedCompanyIdList;

    /**
     * 无开发价值原因说明
     */
    private String noDevelopmentValueRemark;

    /**
     * 无开发价值原因 值请查看通用配置文档
     */
    private Integer noDevelopmentValueReason;

    /**
     * 参保人数
     */
    private Integer insuredMemberCount1;

    /**
     * 经营异常
     */
    private String businessTrouble;

    /**
     * 经营范围
     */
    private String businessScope;

    /**
     * 经营证照url
     */
    private String businessLicenseUrl;

    /**
     * 是否合作
     */
    private Integer isCooperated;

    /**
     * 客户池客户级别（查看通用配置文档）
     */
    private String customerGrade;


    /** 是否内部公司 */
    private Integer isInternal;
    /**
     * 是否为企业客户 1是，0否 用于撮合奖金计算
     */
    private Integer hasEnterpriseCompany;

    /**
     * 是否能查看AI路线设免费版 (1是 0 否)
     */
    private Integer hasCvfvair;

    /**
     * 客户发票要求
     */
    private String customerInvoiceRequirement;

    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<SupplierAccountReqDTO> supplierAccountRspDTOS;

    /** 客户发票列表 */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<CompanyUserInvoiceDTO> customerInvoices;

    /** 客户收货地址列表 */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<CompanyUserAddressQueryRspDTO> customerDeliveryAddress;

    /** 客户收票地址列表 */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<CompanyUserAddressQueryRspDTO> customerInvoiceAddress;

    /** 公司用户列表 */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<CompanyUserListItemRspDTO> companyUserListItems;

    /** 公司联系人列表列表 */
    @JsonInclude(JsonInclude.Include.NON_NULL)
    private List<CompanyContactRspDTO> companyContactRspDTOS;

    private List<CompanyKeyFieldDTO.Type> companyTypeList;
    private Integer inBillingBlacklist;
    private Integer hasAssignOrder;
    private Integer assignOrderThreshold;
    /** 客户专属采购ID */
    private Long ccpId;

    /** 客户专属采购姓名 */
    private String ccpName;

}
